美团:2022年美团技术年货合辑.pdf

您所在的位置:网站首页 pytorch 动态batchsize 美团:2022年美团技术年货合辑.pdf

美团:2022年美团技术年货合辑.pdf

2023-03-23 12:56| 来源: 网络整理| 查看: 265

新春将至,一年一度的美团技术年货也如约到来!

时间煮雨,岁月缝花,花开无声,花谢无语。2022这一年,我们一起经

历了无数的悲喜,也留下了满满的回忆。

也许生活就是这样,只有历尽波澜,才能欣赏茫茫大海的辽阔和无边,

才能感受到漫天星辰的光芒和温暖。

在2023年春节到来之际,我们从去年美团技术团队公众号上精选了60多

篇技术文章,整理制作成一本1300多页的电子书,作为新年礼物赠送给

大家。

这本电子书内容覆盖算法、前端、后端、数据、安全等多个技术领域,

希望能对同学们的工作和学习有所帮助。

也欢迎大家转给更多有相同兴趣、积极上进的同事和朋友们,一起切

磋,共同成长。

祝愿2023年,大家诸事顺遂,健康平安。

目录

算法 1

YOLOv6:又快又准的目标检测框架开源啦 1

目标检测开源框架 YOLOv6 全面升级,更快更准的 2.0 版本来啦 13

通用目标检测开源框架 YOLOv6 在美团的量化部署实战 17

7 次 KDD Cup&Kaggle 冠军的经验分享:从多领域优化到 AutoML 框架 37

图神经网络训练框架的实践和探索 66

图技术在美团外卖下的场景化应用及探索 83

大规模异构图召回在美团到店推荐广告的应用 102

美团搜索粗排优化的探索与实践 116

美团外卖推荐情境化智能流量分发的实践与探索 129

大众点评搜索相关性技术探索与实践 152

美团 SemEval2022 结构化情感分析跨语言赛道冠军方法总结 174

检索式对话系统在美团客服场景的探索与实践 188

端智能在大众点评搜索重排序的应用实践 216

对话摘要技术在美团的探索(SIGIR) 238

异构广告混排在美团到店业务的探索与实践 258

短视频内容理解与生成技术在美团的创新实践 271

美团搜索中查询改写技术的探索与实践 297

美团内部讲座 | 清华大学崔鹏:因果启发的学习、推断和决策 325

NeurIPS 2021 | Twins:重新思考高效的视觉注意力模型设计 339

iv > 2022年美团技术年货

美团获得小样本学习榜单 FewCLUE 第一! Prompt Learning+ 自训练实战 353

DSTC10 开放领域对话评估比赛冠军方法总结 368

KDD 2022 | 美团技术团队精选论文解读 382

ACM SIGIR 2022 | 美团技术团队精选论文解读 391

CVPR 2022 | 美团技术团队精选论文解读 404

ACM MM & ECCV 2022 | 美团视觉 8 篇论文揭秘内容领域的智能科技 413

前端 427

知识图谱可视化技术在美团的实践与探索 427

终端新玩法:技术栈无关的剧本式引导 459

自动化测试在美团外卖的实践与落地 483

深入理解函数式编程(上) 512

深入理解函数式编程(下) 541

Android 对 so 体积优化的探索与实践 568

从 0 到 1:美团端侧 CDN 容灾解决方案 589

美团高性能终端实时日志系统建设实践 608

后端 622

可视化全链路日志追踪 622

设计模式二三事 647

基于代价的慢查询优化建议 670

Java 系列 | 远程热部署在美团的落地实践 692

日志导致线程 Block 的这些坑,你不得不防 713

基于 AI 算法的数据库异常监测系统的设计与实现 775

Replication(上):常见复制模型 & 分布式系统挑战 目录 

Replication(下):事务,一致性与共识

TensorFlow 在美团外卖推荐场景的 GPU 训练优化实践 792

CompletableFuture 原理与实践 - 外卖商家端 API 的异步化 818

工程效能 CI/CD 之流水线引擎的建设实践 855

美团外卖搜索基于 Elasticsearch 的优化实践 879

美团图灵机器学习平台性能起飞的秘密(一) 912

提升资源利用率与保障服务质量,鱼与熊掌不可兼得? 933

标准化思想及组装式架构在后端 BFF 中的实践 953

外卖广告大规模深度学习模型工程实践 | 美团外卖广告工程实践专题连载 971

数据库全量 SQL 分析与审计系统性能优化之旅 992

数据库异常智能分析与诊断 1013

美团外卖广告智能算力的探索与实践(二) 1048

Linux 下跨语言调用 C++ 实践 1059

GPU 在外卖场景精排模型预估中的应用实践 1079

美团集群调度系统的云原生实践 1101

广告平台化的探索与实践 | 美团外卖广告工程实践专题连载 1130

1149

1161

数据 1193

Kafka 在美团数据平台的实践 1193

美团综合业务推荐系统的质量模型及实践 1218

业务数据治理体系化思考与实践 1233

数据治理一体化实践之体系化建模 1263

vi > 2022年美团技术年货 1277

运维 / 安全 1277

1293

数字化新业态下数据安全创新——Token 化 1328

Linux 中基于 eBPF 的恶意利用与检测机制

如何应对开源组件风险?软件成分安全分析(SCA)能力的建设与演进

算法 

算法

YOLOv6:又快又准的目标检测框架开源啦

作者:楚怡 凯衡 等

1. 概述

YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。本框架

同时专注于检测的精度和推理效率,在工业界常用的尺寸模型中:YOLOv6-nano

在 COCO 上精度可达 35.0% AP,在 T4 上推理速度可达 1242 FPS;YOLOv6-s

在 COCO 上精度可达 43.1% AP,在 T4 上推理速度可达 520 FPS。在部署方面,

YOLOv6 支 持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、

NCNN)等不同平台的部署,极大地简化工程部署时的适配工作。

目前,项目已开源至 Github,传送门:YOLOv6。欢迎有需要的小伙伴们 Star 收

藏,随时取用。

精度与速度远超 YOLOv5 和 YOLOX 的新框架

目标检测作为计算机视觉领域的一项基础性技术,在工业界得到了广泛的应用,其

中 YOLO 系列算法因其较好的综合性能,逐渐成为大多数工业应用时的首选框

架。至今,业界已衍生出许多 YOLO 检测框架,其中以 YOLOv5[1]、YOLOX[2] 和

PP-YOLOE[3] 最具代表性,但在实际使用中,我们发现上述框架在速度和精度方面

仍有很大的提升的空间。基于此,我们通过研究并借鉴了业界已有的先进技术,开发

了一套新的目标检测框架——YOLOv6。该框架支持模型训练、推理及多平台部署

等全链条的工业应用需求,并在网络结构、训练策略等算法层面进行了多项改进和优

化,在 COCO 数据集上,YOLOv6 在精度和速度方面均超越其他同体量算法,相关

结果如下图 1 所示:

2 > 2022年美团技术年货

图 1-1 YOLOv6 各尺寸模型与其他模型性能对比

图 1-2 YOLOv6 与其他模型在不同分辨率下性能对比

算法 

图 1-1 展示了不同尺寸网络下各检测算法的性能对比,曲线上的点分别表示该检测

算法在不同尺寸网络下(s/tiny/nano)的模型性能,从图中可以看到,YOLOv6 在精

度和速度方面均超越其他 YOLO 系列同体量算法。

图 1-2 展示了输入分辨率变化时各检测网络模型的性能对比,曲线上的点从左往右

分别表示图像分辨率依次增大时(384/448/512/576/640)该模型的性能,从图中可

以看到,YOLOv6 在不同分辨率下,仍然保持较大的性能优势。

2. YOLOv6 关键技术介绍

YOLOv6 主要在 BackBone、Neck、Head 以及训练策略等方面进行了诸多的

改进:

● 我们统一设计了更高效的 Backbone 和 Neck :受到硬件感知神经网络设计

思想的启发,基于 RepVGG style[4] 设计了可重参数化、更高效的骨干网络

EfficientRep Backbone 和 Rep-PAN Neck。

● 优化设计了更简洁有效的 Efficient Decoupled Head,在维持精度的同时,

进一步降低了一般解耦头带来的额外延时开销。

● 在训练策略上,我们采用 Anchor-free 无锚范式,同时辅以 SimOTA[2] 标签

分配策略以及 SIoU[9] 边界框回归损失来进一步提高检测精度。

2.1 Hardware-friendly 的骨干网络设计

YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet[5] 搭建,采用了多分

支的方式和残差结构。对于 GPU 等硬件来说,这种结构会一定程度上增加延时,同

时减小内存带宽利用率。下图 2 为计算机体系结构领域中的 Roofline Model[8] 介绍

图,显示了硬件中计算能力和内存带宽之间的关联关系。

4 > 2022年美团技术年货

图 2 Roofline Model 介绍图

于是,我们基于硬件感知神经网络设计的思想,对 Backbone 和 Neck 进行了重新

设计和优化。该思想基于硬件的特性、推理框架 / 编译框架的特点,以硬件和编译友

好的结构作为设计原则,在网络构建时,综合考虑硬件计算能力、内存带宽、编译

优化特性、网络表征能力等,进而获得又快又好的网络结构。对上述重新设计的两

个检测部件,我们在 YOLOv6 中分别称为 EfficientRep Backbone 和 Rep-PAN

Neck,其主要贡献点在于:

● 引入了 RepVGG[4] style 结构。

● 基于硬件感知思想重新设计了 Backbone 和 Neck。

RepVGG[4] Style 结构是一种在训练时具有多分支拓扑,而在实际部署时可以等效融

合为单个 3x3 卷积的一种可重参数化的结构(融合过程如下图 3 所示)。通过融合成

的 3x3 卷积结构,可以有效利用计算密集型硬件计算能力(比如 GPU),同时也可

获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel MKL 编译框架的

帮助。

算法 

实验表明,通过上述策略,YOLOv6 减少了在硬件上的延时,并显著提升了算法的

精度,让检测网络更快更强。以 nano 尺寸模型为例,对比 YOLOv5-nano 采用的

网络结构,本方法在速度上提升了 21%,同时精度提升 3.6% AP。

图 3 Rep 算子的融合过程 [4]

EfficientRep Backbone: 在 Backbone 设 计 方 面, 我 们 基 于 以 上 Rep 算 子

设 计 了 一 个 高 效 的 Backbone。 相 比 于 YOLOv5 采 用 的 CSP-Backbone, 该

Backbone 能够高效利用硬件(如 GPU)算力的同时,还具有较强的表征能力。

下图 4 为 EfficientRep Backbone 具体设计结构图,我们将 Backbone 中 stride=2

的普通 Conv 层替换成了 stride=2 的 RepConv 层。同时,将原始的 CSP-Block

6 > 2022年美团技术年货

都重新设计为 RepBlock,其中 RepBlock 的第一个 RepConv 会做 channel 维度

的变换和对齐。另外,我们还将原始的 SPPF 优化设计为更加高效的 SimSPPF。

图 4 EfficientRep Backbone 结构图

Rep-PAN:在 Neck 设计方面,为了让其在硬件上推理更加高效,以达到更好的精

度与速度的平衡,我们基于硬件感知神经网络设计思想,为 YOLOv6 设计了一个更

有效的特征融合网络结构。

Rep-PAN 基于 PAN[6] 拓扑方式,用 RepBlock 替换了 YOLOv5 中使用的 CSP-

Block,同时对整体 Neck 中的算子进行了调整,目的是在硬件上达到高效推理的同

时,保持较好的多尺度特征融合能力(Rep-PAN 结构图如下图 5 所示)。

算法 

图 5 Rep-PAN 结构图

2.2 更简洁高效的 Decoupled Head

在 YOLOv6 中,我们采用了解耦检测头(Decoupled Head)结构,并对其进行了

精简设计。原始 YOLOv5 的检测头是通过分类和回归分支融合共享的方式来实现的,

而 YOLOX 的检测头则是将分类和回归分支进行解耦,同时新增了两个额外的 3x3

的卷积层,虽然提升了检测精度,但一定程度上增加了网络延时。

因此,我们对解耦头进行了精简设计,同时综合考虑到相关算子表征能力和硬件上计

算开销这两者的平衡,采用 Hybrid Channels 策略重新设计了一个更高效的解耦头

结构,在维持精度的同时降低了延时,缓解了解耦头中 3x3 卷积带来的额外延时开

销。通过在 nano 尺寸模型上进行消融实验,对比相同通道数的解耦头结构,精度提

升 0.2% AP 的同时,速度提升 6.8%。

8 > 2022年美团技术年货

图 6 Efficient Decoupled Head 结构图

2.3 更有效的训练策略

为了进一步提升检测精度,我们吸收借鉴了学术界和业界其他检测框架的先进研究进

展:Anchor-free 无锚范式 、SimOTA 标签分配策略以及 SIoU 边界框回归损失。

Anchor-free 无锚范式

YOLOv6 采用了更简洁的 Anchor-free 检测方法。由于 Anchor-based 检测器需

要在训练之前进行聚类分析以确定最佳 Anchor 集合,这会一定程度提高检测器的复

杂度;同时,在一些边缘端的应用中,需要在硬件之间搬运大量检测结果的步骤,也

会带来额外的延时。而 Anchor-free 无锚范式因其泛化能力强,解码逻辑更简单,

在近几年中应用比较广泛。经过对 Anchor-free 的实验调研,我们发现,相较于

算法 

Anchor-based 检测器的复杂度而带来的额外延时,Anchor-free 检测器在速度上

有 51% 的提升。

SimOTA 标签分配策略

为了获得更多高质量的正样本,YOLOv6 引入了 SimOTA [4] 算法动态分配正样本,

进一步提高检测精度。YOLOv5 的标签分配策略是基于 Shape 匹配,并通过跨网格

匹配策略增加正样本数量,从而使得网络快速收敛,但是该方法属于静态分配方法,

并不会随着网络训练的过程而调整。

近年来,也出现不少基于动态标签分配的方法,此类方法会根据训练过程中的网络输

出来分配正样本,从而可以产生更多高质量的正样本,继而又促进网络的正向优化。

例如,OTA[7] 通过将样本匹配建模成最佳传输问题,求得全局信息下的最佳样本匹

配策略以提升精度,但 OTA 由于使用了 Sinkhorn-Knopp 算法导致训练时间加长,

而 SimOTA[4] 算法使用 Top-K 近似策略来得到样本最佳匹配,大大加快了训练速

度。故 YOLOv6 采用了 SimOTA 动态分配策略,并结合无锚范式,在 nano 尺寸

模型上平均检测精度提升 1.3% AP。

SIoU 边界框回归损失

为了进一步提升回归精度,YOLOv6 采用了 SIoU[9] 边界框回归损失函数来监督网络

的学习。目标检测网络的训练一般需要至少定义两个损失函数:分类损失和边界框回

归损失,而损失函数的定义往往对检测精度以及训练速度产生较大的影响。

近年来,常用的边界框回归损失包括 IoU、GIoU、CIoU、DIoU loss 等等,这些损

失函数通过考虑预测框与目标框之前的重叠程度、中心点距离、纵横比等因素来衡量

两者之间的差距,从而指导网络最小化损失以提升回归精度,但是这些方法都没有考

虑到预测框与目标框之间方向的匹配性。SIoU 损失函数通过引入了所需回归之间的

向量角度,重新定义了距离损失,有效降低了回归的自由度,加快网络收敛,进一步

提升了回归精度。通过在 YOLOv6s 上采用 SIoU loss 进行实验,对比 CIoU loss,

平均检测精度提升 0.3% AP。

10 > 2022年美团技术年货

3. 实验结果

经过以上优化策略和改进,YOLOv6 在多个不同尺寸下的模型均取得了卓越的表现。

下表 1 展示了 YOLOv6-nano 的消融实验结果,从实验结果可以看出,我们自主设

计的检测网络在精度和速度上都带来了很大的增益。

表 1 YOLOv6-nano 消融实验结果

下表 2 展示了 YOLOv6 与当前主流的其他 YOLO 系列算法相比较的实验结果。从

表格中可以看到:

表 2 YOLOv6 各尺寸模型性能与其他模型的比较

● YOLOv6-nano 在 COCO val 上 取得了 35.0% AP 的精度,同时在 T4 上

算法 

使用 TRT FP16 batchsize=32 进行推理,可达到 1242FPS 的性能,相较

于 YOLOv5-nano 精度提升 7% AP,速度提升 85%。

● YOLOv6-tiny 在 COCO val 上 取得了 41.3% AP 的精度,同时在 T4 上使

用 TRT FP16 batchsize=32 进行推理,可达到 602FPS 的性能,相较于

YOLOv5-s 精度提升 3.9% AP,速度提升 29.4%。

● YOLOv6-s 在 COCO val 上 取得了 43.1% AP 的精度,同时在 T4 上使

用 TRT FP16 batchsize=32 进行推理,可达到 520FPS 的性能,相较于

YOLOX-s 精度提升 2.6% AP,速度提升 38.6%;相较于 PP-YOLOE-s

精度提升 0.4% AP 的条件下,在 T4 上使用 TRT FP16 进行单 batch 推理,

速度提升 71.3%。

4. 总结与展望

本文介绍了美团视觉智能部在目标检测框架方面的优化及实践经验,我们针对 YOLO

系列框架,在训练策略、主干网络、多尺度特征融合、检测头等方面进行了思考和优

化,设计了新的检测框架 -YOLOv6,初衷来自于解决工业应用落地时所遇到的实际

问题。

在打造 YOLOv6 框架的同时,我们探索和优化了一些新的方法,例如基于硬件感

知 神 经 网 络 设 计 思 想 自 研 了 EfficientRep Backbone、Rep-Neck 和 Efficient

Decoupled Head,同时也吸收借鉴了学术界和工业界的一些前沿进展和成果,例如

Anchor-free、SimOTA 和 SIoU 回归损失。在 COCO 数据集上的实验结果显示,

YOLOv6 在检测精度和速度方面都属于佼佼者。

未来我们会持续建设和完善 YOLOv6 生态,主要工作包括以下几个方面:

1) 完善 YOLOv6 全系列模型,持续提升检测性能。 2) 在多种硬件平台上,设计硬

件友好的模型。 3) 支持 ARM 平台部署以及量化蒸馏等全链条适配。 4) 横向拓展和

引入关联技术,如半监督、自监督学习等等。 5) 探索 YOLOv6 在更多的未知业务场

景上的泛化性能。

12 > 2022年美团技术年货

同时也欢迎社区同学加入我们,共同建设一个适合工业应用的更快更准的目标检测

框架。

5. 参考文献

[1] YOLOv5, https://github.com/ultralytics/yolov5

[2] YOLOX: Exceeding YOLO Series in 2021, https://arxiv.org/

abs/2107.08430

[3] PP-YOLOE: An evolved version of YOLO, https://arxiv.org/

abs/2203.16250

[4] RepVGG: Making VGG-style ConvNets Great Again, https://arxiv.org/

pdf/2101.03697

[5] CSPNet: A New Backbone that can Enhance Learning Capability of CNN,

https://arxiv.org/abs/1911.11929

[6] Path aggregation network for instance segmentation, https://arxiv.org/

abs/1803.01534

[7] OTA: Optimal Transport Assignment for Object Detection, https://arxiv.org/

abs/2103.14259

[8] Computer Architecture: A Quantitative Approach

[9] SIoU Loss: More Powerful Learning for Bounding Box Regression, https://

arxiv.org/abs/2205.12740

6. 作者简介

楚怡、凯衡、亦非、程孟、秦皓、一鸣、红亮、林园等,均来自美团基础研发平台 / 视觉智

能部。

算法 

目标检测开源框架 YOLOv6 全面升级,

更快更准的 2.0 版本来啦

作者:楚怡 红亮 梦婕等

9 月 5 日,美团视觉智能部发布了 YOLOv6 2.0 版本,本次更新对轻量级网络进

行 了 全 面 升 级, 量 化 版 模 型 YOLOv6-S 达 到 了 869 FPS, 同 时, 还 推 出 了 综

合 性 能 优 异 的 中 大 型 网 络(YOLOv6-M/L), 丰 富 了 YOLOv6 网 络 系 列。 其 中,

YOLOv6-M/L 在 COCO 上检测精度(AP)分别达到 49.5%/52.5%,在 T4 卡上

推理速度分别可达 FPS(batch size =32)。

GitHub 下载地址:https://github.com/meituan/YOLOv6。欢迎 Star 收藏,随时取用。

官 方 出 品 详 细 的 Tech Report 带 你 解 构 YOLOv6:YOLOv6: A Single-Stage

Object Detection Framework for Industrial Applications。

图 1 YOLOv6 各尺寸模型与其他 YOLO 系列的性能对比图

注:YOLOv6 系列模型均在训练 300epoch 且不使用预训练模型或额外检测数据集

下获得,“‡”表示采用了自蒸馏算法,“*”表示从官方代码库对发布模型进行重新

测评的指标。以上速度指标均在 T4 TRT7.2 环境下测试。

14 > 2022年美团技术年货

表 1 YOLOv6 各尺寸模型与其他 YOLO 系列的性能对比结果

注:YOLOv6 系列模型均在训练 300epoch 且不使用预训练模型或额外检测数据集

下获得,“‡”表示采用了自蒸馏算法,“*”表示从官方代码库对发布模型进行重新

测评的指标。以上速度指标均在 T4 TRT7.2 环境下测试。

本次版本升级,主要有以下更新:

性能更强的全系列模型

1. 针对中大型模型(YOLOv6-M/L),设计了新主干网络 CSPStackRep,它在

综合性能上比上一版的 Single Path 结构更具优势。

2. 针对不同网络,系统性地验证了各种最新策略 / 算法的优劣,综合精度和速

度,为每类网络选择合适的方案。同时将模型整体训练时间减少了 50%,极

大地提升了模型的训练效率。

3. 引入自蒸馏思想并设计了新的学习策略,大幅提升了 YOLOv6-M/L 的模型

精度。

算法 

4. 通过训练时 Early Stop 强数据增强及推理时图像 Resize 优化策略,修复了

前期版本中输入尺寸对齐到 640x640 后精度损失的问题,提升了现有模型的

实际部署精度。

表 1 展示了 YOLOv6 与当前主流的其他 YOLO 系列算法相比较的实验结果,对比

业界其他 YOLO 系列,YOLOv6 在所有系列均具有一定的优势:

● YOLOv6-M 在 COCO val 上 取得了 49.5% 的精度,在 T4 显卡上使用

TRT FP16 batchsize=32 进行推理,可达到 233 FPS 的性能。

● YOLOv6-L 在 COCO val 上 取得了 52.5% 的精度,在 T4 显卡上使用 TRT

FP16 batchsize=32 进行推理,可达到 121 FPS 的性能。

● 同时,YOLOv6-N/ S 模型在保持同等推理速度情况下,大幅提升了精度指

标,训练 400 epoch 的条件下,N 网络从 35.0% 提升至 36.3%,S 网络从

43.1% 提升至 43.8%。

量身定制的量化方案

本次发布还集成了专门针对 YOLOv6 的量化方案,对重参数化系列模型的量化也有

参考意义。该方案借鉴 RepOptimizer [1] 在梯度更新时做重参数化,解决了多支路动

态范围过大导致难以量化的问题,用 RepOptimizer 训练的 YOLOv6 模型可以直接

使用训练后量化(Post-training Quantization,PTQ),而不产生过大的精度损失。

在这一基础上,我们分析了各层的量化敏感性,将部分敏感层以更高精度运算,进

一步提升了模型的精度。另外,我们同时发布了针对 2.0 版本的基于逐通道蒸馏

的 量 化 感 知 训 练 方 案(Quantization-aware Training,QAT), 并 结 合 图 优 化,

YOLOv6-S 2.0 版本的量化性能可达到 43.3 mAP 和 869 FPS(batch size=32)。

16 > 2022年美团技术年货

表 2 YOLOv6-S 量化方案与 PaddleSlim 应用于 YOLO 系列模型的量化效果对比

注:以上速度指标均在 T4 TRT8.4 环境下测试。对比方法为 PaddleSlim [30] 。

不同之处是 PaddleSlim 使用 YOLOv6-S 1.0 版本,我们的量化方案应用于 2.0 版

本。更详尽的关于量化部署实践的相关内容,近期会在美团技术团队公众号上进行推

送,敬请期待。

完备的开发支持和多平台部署适配

YOLOv6 支持检测模型训练、评估、预测以及模型量化、蒸馏等全链路开发流程,

同时支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)

等 不 同 平 台 的 部 署, 极 大 简 化 工 程 部 署 时 的 适 配 工 作。 更 详 细 的 教 程 指 引 请 移 步

YOLOv6 Github 仓库 Deployment 的部分。

相关论文

[1] RepOptimizer:Re-parameterizing Your Optimizers rather than Architectures

算法 

通用目标检测开源框架 YOLOv6 在

美团的量化部署实战

作者:庆源 李亮 奕铎 张勃 王新 祥祥

1. 背景和难点

YOLOv6 是美团发布的一款开源的面向工业应用的 2D 目标检测模型 [1],主要特点

是速度快、精度高、部署友好,在美团众多视觉业务场景中都有着广泛的应用。通过

量化(Quantization)提升推理速度是实际工业应用中的基本操作,但由于 YOLOv6

系列模型采用了大量的重参数化模块,如何针对 YOLOv6 进行高效和高精度的

量化成为一个亟待解决的问题。本文旨在解决 YOLOv6 量化方面的难题,并以

YOLOv6s 模型为例,从训练后量化(Post-Training Quantization, PTQ)和量化

感知训练(Quantization-Aware Training, QAT)两个方面进行分析,探索出了一

条切实可行的量化方案。

YOLOv6 采用了多分支的重参数化结构 [2](如图 1A 所示),通过在网络结构层面加

入人工先验可以在训练阶段让模型更好收敛。在推理阶段,多分支可以等价合并为单

路,从而提升运行速度。但现有的训练后量化方法,不能很好应对多分支结构带来的

剧烈变动的数值范围,导致量化后产生严重的精度损失 [3]。另外,如何针对多分支结

构设计量化感知训练(QAT)方法也面临着较大的挑战。蒸馏常被用来辅助 QAT 提

升性能,但如何应用 2D 目标检测的蒸馏方法来辅助 YOLOv6 模型的量化,也需要

设计合理的方案在实际应用中进行检验。

18 > 2022年美团技术年货

图 1 多分支结构重参数化过程(A)结构变化(B)参数变化(来源:[2])

2. 量化方案实战

2.1 重参数化优化器

YOLOv6 网络中大量使用重参数化结构,在提高模型训练精度的同时能够显著降低

模型部署推理延时,但也带来了模型量化部署方面的难题。对重参数化网络的直接量

化一般会带来不可接受的精度损失,例如 RepVGG-B1 [2] 网络在 ImageNet 数据集

上的浮点精度为 78.42%,采用 TensorRT 后量化(PTQ)的量化模型精度则降低为

54.55%。

此外,由于重参数化结构在训练和部署时结构不同,因此无法直接适配现有的量化感

知训练(QAT)方法,如何使用 QAT 方法来提高 YOLOv6 量化模型的精度,同样存

算法 

在着挑战。近期,一篇重参数化优化器的工作 RepOpt [3] 较好地解决了重参数化结构

的量化问题。

2.1.1 RepOpt

RepOpt [3] 对重参数化结构量化困难的问题进行了研究,发现重参数结构的分支融合

操作,显著放大了权重参数分布的标准差。异常的权重分布产生了过大的网络激活层

数值分布,进一步导致该层量化损失过大,因此模型精度损失严重。

鉴于此,我们统计了基于 RepVGG 结构的 YOLOv6 模型(YOLOv6s_repvgg)各

层的权重及激活数值分布,分析了 YOLOv6 中的重参数化层的数据分布。下图 2 以

“Rep_p4.block.0.rbr_reparam”层为例,给出其特征图数值分布直方图,我们发

现其数值广泛分布在 [0, 57] 的区间内。显然,采用现有的 INT8 量化方法,无论怎样选

择量化缩放参数(scale),都会产生较大的量化误差。

图 2 YOLOv6 网络使用 RepVGGBlock 和 RepOptBlock 版本的单层激活值数据分布

为解决这一问题,RepOpt 提出了一种基于优化器的重参数化设计(如下图 3 所

20 > 2022年美团技术年货

示),通过梯度掩码(Gradient Mask)的方式在网络训练反向传播的过程中加入先

验,保证了训练精度可达到 RepVGG 相近的水平,而网络结构则在训练和推理阶

段始终保持普通的 VGG 结构,这种训练方法请参考 RepOpt [3]。该工作中提出的

RepOpt-B1 网络模型,在浮点精度与 RepVGG-B1 基本一致的情况下,量化模型

精度提升超过 20%,极大地改善了重参数化网络的量化掉点问题。此外,RepOpt

模型的训练速度快,内存占用也比较低。

图 3 RepVGG 和 RepOpt 结构示意图

2.1.2 RepOpt 版本的 PTQ

我 们 实 现 了 RepOpt 版 本 的 YOLOv6s 网 络(YOLOv6s_repopt), 达 到 了 与

YOLOv6s_repvgg 一致的浮点精度 42.4%(300 epochs),两个版本的网络结构在

部署阶段保持一致。我们首先分析了 YOLOv6s_repopt 模型的数据分布特征。

如图 2 所示,给出了“Rep_p4.block.0.rbr_reparam”层的特征图数值分布直方

图,可以看到数值紧密分布在 [0, 10] 的区间内,相比 YOLOv6s_repvgg 的数值分布

算法 

对于量化操作更加友好。进一步采用 TRT 的后量化方法进行模型量化部署,可以看

到 YOLOv6s_repvgg 的量化网络精度降低了 7.4%,在实际工程中基本不可用。而

YOLOv6s_repopt 网络的量化模型精度为 40.9%,精度损失仅为 1.5%,相比原版

模型有了极大的改善。

表 1 使用 RepOpt 在标准分类和检测任务上的 INT8 精度提升

2.1.3 RepOpt 版本的 QAT

此外,使用 RepOpt 结构解决了原本的 RepVGG 网络无法直接使用现有量化感知训

练的问题。对于结构重参数化的 RepVGG 网络,如何使用 QAT 来恢复量化模型精

度,我们一直存有困扰。如下图 4(左)所示,如果对重参数化操作之前的多分支网

络进行 QAT,对每个分支分别添加伪量化算子进行量化感知训练,由于每个分支的

量化参数不同,导致多分支结构无法等效融合进行高性能部署;如果对重参数化操作

之后的单分支网络进行 QAT,由于网络中不再有 BN 层,使用 QAT 方法进行微调并

不容易恢复到浮点精度。而对于 RepOpt 结构网络则不存在这一问题,因为 RepOpt

在训练和部署中网络结构是保持一致的。

22 > 2022年美团技术年货

图 4 RepVGG 和 RepOpt 结构的 QAT 过程示意图

如图 4(右)所示,对 RepOpt 的卷积等算子加入伪量化节点进行量化感知训练,提

升量化模型精度,然后直接部署该量化模型,而不需要再进行模型融合的操作。后

文,我们将给出具体的 QAT 算法及对模型精度的提升结果。

2.2 基于量化敏感度分析的部分量化

YOLOv6s_repopt 在 PTQ 后的 mAP 达到了 40.9%,虽然比之前的 35.0% 有了

很大的改善,但仍然有 1.5% 的精度损失,还无法满足业务需求。因此,我们采用了

部分量化(Partial PTQ),一种使网络中的部分量化敏感层恢复浮点计算,来快速恢

复量化模型精度的方法。首先需要对网络中的每一层都进行量化敏感度分析。

我们在 YOLOv6s-repopt 网络上对常用的敏感度分析方法均方误差(MSE)、信噪

比(SNR)、余弦相似度(Cosine Similarity)进行了对比测试。量化校准(calibra-

tion)测试使用 4 个 batch 的数据,敏感度计算用 1 个 batch,batch 大小设置为 32。

测试时,每次只对一层进行量化,获取该层的激活数据后计算敏感度数值,代表了

该层的量化敏感度。作为对比,我们可以直接计算网络在 COCO val 数据集上的

mAP,使用检测精度作为该层的量化敏感度,即检测精度越高,该层敏感度越低(下

文称为 mAP 方法)。

算法 

表 2 常用的量化敏感度计算方法及含义

测试结果如下图 5 所示,我们对测试结果进行归一化后,从不同敏感度分析结果中选

择敏感性最高的 6 层跳过,计算部分量化精度。

图 5 YOLOv6s_repopt 各层敏感度对比

部分量化精度如下表 3 所示,可以看到:mAP 方法取得了最好的效果,能够有效代

表 YOLOv6 敏感度分析结果。但由于 mAP 方法需要频繁地计算验证集精度,耗

时太久且容易过拟合验证集,因此在实际项目中为了追求效率,我们建议使用 MSE

方法。

24 > 2022年美团技术年货

表 3 使用不同量化敏感指标得到的 Top-6 敏感层及部分量化精度对比

2.3 基于通道蒸馏的量化感知训练

至此,我们优化后的 PTQ 的精度达到了 42.0%,进一步提高模型精度需要引入量

化感知训练( QAT)。量化感知训练(Quantization Aware Training, QAT)可以改

善 PTQ 量化精度损失,通过在训练过程中对卷积等算子加入伪量化操作(如图 4 所

示),使得网络参数能更好地适应量化带来的信息损失,从而显著降低量化后的精度

损失。

模型蒸馏作为一种有效的提升小模型精度的方法,在 QAT 过程中被广泛使用,来提

升量化模型的精度。以下,我们将探索针对 YOLOv6 网络的量化感知训练方法。

2.3.1 通道蒸馏

传统的分类网络在蒸馏时,往往对最后一层输出的 logits 进行蒸馏;但是在检测网络

中一般采用“特征图”蒸馏的方法,直接让学生网络(student)输出的特征图拟合教

师网络(teacher)输出的特征图(一般不会选取整个特征图,而是一些感兴趣区域)。

这种方法的缺陷是特征图中的每个 pixel 对蒸馏的损失贡献相同。我们采用了每通道

分布蒸馏 [6],即让 student 输出的每个通道的分布拟合 teacher 输出的每个通道的

分布。两种方法的区别如下图 6 所示:

算法 

图 6 使用空间维度蒸馏和通道维度蒸馏的对比示意

2.3.2 YOLOv6 量化感知蒸馏框架

针 对 YOLOv6s, 我 们 选 择 对 Neck(Rep-PAN)输 出 的 特 征 图 进 行 通 道 蒸 馏

(channel-wise distillation, CW)。另外,我们采用“自蒸馏”的方法,教师模型是

FP32 精度的 YOLOv6s,学生模型是 INT8 精度的 YOLOv6s。下图 7 是一个简化

示意图,只画出了 Neck 的一个分支:

图 7 应用于 YOLOv6s 的通道蒸馏方案示意图

26 > 2022年美团技术年货

如下表 4 所示,在 Partial QAT 中引入通道蒸馏方案(CW),量化精度进一步提升

了 0.3%。

表 4 Partial QAT 使用通道蒸馏提升对比

3. 部署时优化

3.1 图优化

量化部署时,可以直接利用 TensorRT 的 PTQ 接口进行生成量化引擎,但是这种

方法往往精度损失较大。因此,一般要先进行 QAT,使量化模型精度满足业务需求,

然后导出带有“Quant”、“DeQuant”节点的 ONNX,最后再利用 TensorRT 构

建量化引擎。我们发现这两种方案最终生成的图结构并不相同,导致部署模型的实际

运行效率存在很大的差异,通常 QAT 方法生成的模型效率更低。

我们在 NVIDIA T4 机器上对量化模型进行了对比测试(见下表 5)。尽管 QAT INT8

模型的 QPS 比 FP16 高了~ 27%,但是离 PTQ INT8 还有较大差距。我们对此现

象进行了细致的分析,发现原因是 QAT 引入的“Quant”,“DeQuant”节点打破了

原有 TensorRT 的融合策略,导致了很多算子无法融合,从而影响了最终量化引擎

的性能。在这一节中,我们以 YOLOv6s_repopt 为例,展示一种定位具体瓶颈的图

优化方法。在量化实践中,图优化是一个很实用的手段,我们可以依法炮制,提升模

型的 QPS。

算法 

表 5 PTQ 和 QAT 模型的 QPS 对比

3.1.1 性能分析

首先,我们利用 nsys 工具 [5] 对 QAT INT8 的模型和 PTQ INT8 模型进行了性能分

析,如下表所示:

表 6 PTQ/QAT 节点的 Kernel 运行时间分析

从中我们发现,QAT INT8 有 10.8% 的 kernel 执行了 permutationKernelPLC3

操作,这些操作对应 quantize_scale_node 节点,如下图 8 所示:

28 > 2022年美团技术年货

图 8 permutationKernelPLC3 操作定位

3.1.2 图结构分析

为什么 QAT INT8 会有大量的 permutationKernelPLC3 操作?我们利用 trtexec

和 pltEngine 工具,画出了 PTQ INT8 和 QAT INT8 的计算图,并进行了仔细的分

析。下图 9 是其中一个子图的对比:

算法 

图 9 PTQ 与 QAT 子图区别

QAT INT8 计算图中 neck.reduce_layer1.conv 融合节点输出精度是 FP32,并

且 跟 了 2 个 quantize_scale_node 节 点, 而 PTQ INT8 图 中 的 neck.reduce_

layer1.conv 融合节点输出的是 INT8。很显然,QAT 图中 FP32 和 INT8 之间的转

换会带来额外的开销。我们又利用 Netron 来分析 QAT INT8 的 ONNX 图结构,找

到了 neck.reduce_layer1.conv 这个位置,图 10 给出该节点示意。

图 10 因 Scale 不同而产生了双分支

30 > 2022年美团技术年货

通 过 分 析 ONNX 图 结 构, 我 们 发 现 了 QAT INT8 引 擎 中 neck.reduce_layer1.

conv 输出为 FP32,并且为两个分支保留了 quantize_scale_node 的原因。因

为 neck.upsample1.upsample_transpose 分支的输入量化 scale 为 0.083,而

neck.Rep_n3.conv1 分支的输入量化 scale 为 0.105,这两个节点输入尺度是不同

的,导致 neck.reduce_layer1.conv 无法直接输出为 INT8。

可以看出,对于同一个输出,输入到多路分支后为何 scale 不同的,原因是右边

的分支经过了 concat 操作,会导致输出的数据分布发生变化,再进行激活校准

(Activation Calibration)时,会得到的不同的最佳截断值 (Activaition Max)。

3.1.3 图结构优化

根据上面的分析,如果一个节点的输出,输入到不同的分支节点中,并且分支节点的

量化 scale 不同,则 quantize_scale_node 节点无法融合,进而导致了额外的开

销。如何解决这个问题?我们使用了一个简单的方法,就是强制使所有分支节点的

量化 scale 相同(根据经验,在同一数量级上的 scale 可以安全合并),即直接修改

QAT 网络中的 Quantizer 节点的参数。

我们整理了 YOLOv6s_repopt 中所有需要进行 scale 融合的节点(如表 7 所示),

由于 TensorRT 的 8 bit 的量化范围是 [-127,127],所以只需要将多路分支的

Activation Amax 设为同一个值,一般取多路分支中的最大值。

算法 

表 7 需要融合 Scale 的节点列表

3.1.4 性能测试

经过以上的多路分支的 scale 融合后,我们再次利用 trtexec 和 pltEngine 工具,画

出了 QAT INT8 进行优化前后的图结构。可以发现,quantize_scale_node 节点已

经全部被融合。

32 > 2022年美团技术年货

图 11 图优化后 INT8 图节点变化

我们测试了经过图优化的 QAT 模型,QPS 达到了 528,性能非常接近 PTQ 的

556,而且 mAP 依然保持优化前的 42.1%。

表 8 图优化后 QPS 对比

3.2 线上服务优化

我们在 NVIDIA T4 服务器上进行了端到端的吞吐测试,利用“多实例”并发处理的

技术,YOLOv6s_repopt INT8 QPS 达到了 552,相较 FP16 提升了~ 40%。我

们对服务器的各项指标进行了监测,发现此时 T4 GPU 的利用率只有 95%,还有压

榨空间,而 16 核 CPU 利用率已经超过了 1500%,几乎满负荷运转。我们推测整个

线上服务的“瓶颈”可能在 CPU,而图片预处理会使用大量 CPU 资源。

表 9 服务器资源配置

算法 

3.2.1 DALI 预处理

为了解决 CPU 预处理带来的“瓶颈”,我们采用了 NVIDIA 的 DALI 库,将预处理

直接放到 GPU 中运算。该库可以在 GPU 上对二进制图片进行解码和预处理,极大

的缓解 CPU 瓶颈,下图 12 为 DALI 的经典流程。

图 12 DALI 加速图像预处理流程

3.2.2 吞吐测试

如下图 13 所示,INT8 + DALI 的吞吐达到了 1182 imgs/s,比 INT8 吞吐提升了

1.14 倍。引入 DALI 预处理后,T4 GPU 利用率达到了 100%,而 16 核 CPU 的利

用率则下降到了 1100% 左右,部分 CPU 资源得到了“解放”。另外,我们也测试

FP16 + DALI 的吞吐,反而有略微的下降。我们推测是 DALI 抢占了部分 GPU 计

算资源,而 FP16 服务的瓶颈在 GPU,所以对整体性能产生了负面影响。

34 > 2022年美团技术年货

图 13 使用 DALI 后吞吐测试提升对比

4. 总结

综上所述,本文基于 YOLOv6 V1.0 版本,以 YOLOv6s 为例探讨了基于重参数化

结构设计的 2D 检测模型的量化难点和具体方案,在模型精度基本保持的前提下,通

过量化加速,提升了约 40% 的 QPS。部署时的预处理优化则额外提升了 214%,

极大地提升了工业部署吞吐能力。下表列出了本文尝试的方法及叠加效果。

算法 

表 10 本文使用的量化方案及效果对比

本文使用的速度测试环境见表 11, 测试输入 batch size 为 1,尺寸为 640x640。

表 11 速度测试环境

YOLOv6 版本更新

近日,YOLOv6 已经更新了 V2.0 版本,并新增了中大型网络,对轻量级和小网

络的性能进行了全面升级,进一步提升综合性能,量化效果也得到大幅提升,其中

YOLOv6-S 量化模型达到了 43.3mAP 和 869 FPS(TensorRT 8.4)。更多详细内

容请关注官方出品的技术报告 [7]。

36 > 2022年美团技术年货

表 12 YOLOv6-S V2.0 量化效果

我们希望通过分享本文的实践,进一步推动最新通用目标检测算法的落地。未来,我

们会和业界同行一道,探索更优的量化方案,持续提升量化精度和推理速度,助力降

本增效,深化业务价值。

5. 参考文献

[1] YOLOv6:又快又准的目标检测框架开源啦

[2] RepVGG: Making VGG-style ConvNets Great Again,https://arxiv.org/

abs/2101.03697

[3] ReOpt: Re-parameterizing Your Optimizers rather than Architectures

[4] SNR: https://github.com/openppl-public/ppq/blob/8a849c9b14bacf2a5d0f42a481dfa865d

2b75e66/ppq/quantization/measure/norm.py

[5] Nsight-systems: https://docs.nvidia.com/nsight-systems/UserGuide/index.html

[6] Channel-wise Knowledge Distillation for Dense Prediction, https://arxiv.org/

abs/2011.13256

[7] YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications,

https://arxiv.org/abs/2209.02976

6. 本文作者

庆源、李亮、奕铎、张勃、王新、祥祥等,来自美团基础研发平台数据科学与平台部和视觉智

能部。

算法 

7 次 KDD Cup&Kaggle 冠军的经验分享:

从多领域优化到 AutoML 框架

作者:胡可

1. 背景与简介

反馈快速、竞争激烈的算法比赛是算法从业者提升技术水平的重要方式。从若干行业

核心问题中抽象出的算法比赛题目具有很强的实际意义,而比赛的实时积分榜促使参加

者不断改进,以试图超越当前的最佳实践,而且获胜方案对于工业界与学术界也有很强

的推动作用,例如 KDD Cup 比赛产出的 Field-Aware Factorization Machine(FFM)

算法 [1]、ImageNet 比赛产出的 ResNet 模型 [2] 在业界都有着广泛的应用。

美团到店广告质量预估团队在美团内部算法大赛 MDD Cup 中获得了第一名,受大赛

组委会的邀请,希望分享一些比较通用的比赛经验。本文是笔者 7 次 Kaggle/KDD

Cup 冠军经验(如下图 1 所示)的分享,希望能帮助到更多的同学。

图 1 国际顶级比赛冠军经历

大家都知道,Kaggle/KDD Cup 的比赛均为国际顶级赛事,在比赛圈与工业界有

着很大的影响力。具体而言,Kaggle 是国际上最大的顶级数据挖掘平台,拥有全

38 > 2022年美团技术年货

球几十万用户,通过高额奖金与分享氛围产出了大量优秀算法方案,例如 Heritage

Health 奖金高达三百万美元。目前,Kaggle 比赛在艾滋病研究、棋牌评级和交通预

测等方面均取得了突出成果,得益于此,Kaggle 平台后来被 Google 公司收购。

ACM SIGKDD(国际数据挖掘与知识发现大会,简称 KDD)是数据挖掘领域的国际

顶级会议。KDD Cup 比赛是由 SIGKDD 主办的数据挖掘研究领域的国际顶级赛事。

从 1997 年开始,每年举办一次,是目前数据挖掘领域最具影响力的赛事。该比赛同

时面向企业界和学术界,云集了世界数据挖掘界的顶尖专家、学者、工程师、学生等

参加,为数据挖掘从业者们提供了一个学术交流和研究成果展示的平台。

通过分析不难发现,KDD Cup 举办 20 年来,一直紧密结合工业界前沿与热点问题,演

进主要分为三个阶段。第一阶段从 2002 年左右开始,专注于互联网的热点推荐系统方面

问题,包括推荐、广告,行为预测等;第二阶段聚焦在传统行业问题,比较关注教育、环

境、医疗等领域;而在第三阶段,自 2019 年以来,重点关注非监督问题,例如 AutoML、

Debiasing、强化学习等问题,这类比赛的共同特点是通过以前方法难以解决现有的

新问题。这三个阶段趋势也一定程度反应着当前工业界与学术界的难点与重点,无论

从方式、方法,还是从问题维度,都呈现出从窄到宽,从标准向非标准演进的趋势。

图 2 KDD Cup 近 20 年问题趋势

本文会先介绍笔者的 7 次 KDD Cup/Kaggle 比赛冠军的方案与理解,问题涉及推

荐、广告、交通、环境、人工智能公平性等多个领域问题。接着会介绍在以上比赛中

发挥关键作用的 AutoML 技术框架,包括自动化特征工程,自动化模型优化,自动化

算法 

模型融合等,以及如何通过该技术框架系统性建模不同的问题。最后再介绍以上比赛

形成的通用方法,即面对一个新问题,如何进行分析、理解、建模、与挑战解决、从

而实现问题的深度优化。

本文主要面向以下两类读者,其他感兴趣的同学也欢迎了解。

● 算法比赛爱好者,希望理解国际数据挖掘顶级比赛冠军方案的方法与逻辑,取

得更好的名次。

● 工业界工程师与研究员,借鉴比赛方法,应用于实际工作,取得更优的结果。

2. 多领域建模优化

本部分将我们将以上比赛分为三个部分进行方案介绍,第一部分为推荐系统问题;第

二部分为时间序列问题,跟第一部分的重要差别在于预测的是未来的多点序列,而非

推荐系统的单点预估;第三部分为自动化机器学习问题,该问题比赛输入不为单一数

据集,而是多问题的多数据集,并且在最终评估的 b 榜数据集问题也是未知的。因

此,对于方案的鲁棒性要求非常高。如表 1 所示,后续将具体介绍七个比赛赛道的获

胜方案,但会合并为五个核心解决方案进行具体的介绍。

表 1 竞赛及解决方案

40 > 2022年美团技术年货

2.1 推荐系统问题

本节主要介绍 Kaggle Outbrain Ads Click Prediction 和 KDD Cup 2020 Debias-

ing 比赛。二者任务都是面向用户下一次点击预估问题,但因为应用场景与背景的不

同,存在着不同的挑战:前者的数据规模庞大,涉及到数亿个用户在千级别数量异构

站点上的数十亿条浏览记录,对模型优化、融合有着严格的要求;后者则尤为关注推

荐系统中的偏差问题,要求参赛选手提出有效的解决方案,来缓解选择性偏差以及流

行度偏差,从而提高推荐系统的公平性。本节将分别介绍这两场比赛。

Kaggle Outbrain Ads Click Prediction:基于多层级多因子的模型融合方案

竞赛问题与挑战:竞赛要求在 Outbrain 网页内容发现平台上,预估用户下一次点击

网页广告,具体参考:Kaggle Outbrain 比赛介绍详情 [26]。参赛选手会面对以下两个

重要挑战:

● 异构性:平台提供需求方平台(DSP)广告投放服务,涉及到用户在数千个异

质站点上的行为刻画。

● 超高维稀疏性:特征高维稀疏,数据规模庞大,包含了 7 亿个用户、20 亿次

浏览记录。

基于多层级多因子的模型融合方案:针对本次赛题的挑战,我们队采用了基于多层级

多因子的模型融合方案来进行建模。一方面对于异构站点行为,单一模型不易于全

面刻画,另一方面,亿级别的数据规模给多模型的分别优化带来了较大的空间。由

于 FFM 具有强大的特征交叉能力以及较强的泛化能力,能更好地处理高维稀疏特征。

因此,我们选择该模型作为融合基模型的主模型。模型融合通过不同模型学习到有差

异性的内容,从而有效挖掘用户在不同站点上的异质行为。模型融合的关键是产生并

结合“好而不同”的模型 [3][4]。基于多层级多因子的模型融合方案首先通过模型差异

性、特征差异性多个角度来构造模型之间的差异性,然后通过多层级以及使用基学习

器的多特征因子(模型 pCTR 预估值、隐层表征)进行融合:

算法 

图 3 多层级多因子模型融合

具体地,如上图 3 所示。第一层级的目的是构建出有差异性的单个模型,主要通过不

同类型的模型在用户最近行为、全部行为数据以及不同特征集合上分别进行训练,来

产生差异性。第二层级则通过不同单个模型的组合进一步产生差异性,差异性的提升

来源于两个方面,分别是模型组合方式的不同(用不同模型,根据单模型特征进行打

分)以及用于模型组合的特征因子的不同,这里特征因子包括模型的打分以及模型中

的隐层参数。第三层级则是考虑如何将不同融合结果组合在一起。由于划分出来的验

证数据集较小,如果使用复杂非线性模型往往容易过拟合。所以这里使用了一个基于

约束的线性模型来获得第二层级模型的融合权重。

上述方案同我们业务中模型相比,采用更多的模型融合,在取得高精度的同时产生了

更高的开销,而在实际业务中要更加注重效果与效率的平衡。

KDD Cup 2020 Debasing:基于 i2i 多跳游走的 Debiasing 方案

竞赛问题与挑战:竞赛是以电子商务平台为背景,预估用户下一次点击的商品。并围

绕着如何缓解推荐系统中的选择性偏差以及流行度偏差进行展开,具体参考:KDD

Cup 2020 Debiasing 比赛介绍详情 [27]。推荐系统中的偏差问题有很多,除了上述

两种偏差,还有曝光偏差、位次偏差等等 [5][6]。我们团队之前也对位次偏差进行了相

关研究 [7]。而本次竞赛为了更好地衡量推荐系统对历史低热度商品的推荐效果,选手

的成绩主要采用 NDCG@50_half 指标进行排名。该指标是从整个评测数据集中取

出一半历史曝光少的点击商品,由于是低热度且有被点击的商品,可以跟更好的评估

偏差问题。本次比赛包含了以下挑战:

42 > 2022年美团技术年货

● 赛题只提供点击数据,构造候选集时需要考虑选择性偏差问题。

● 不同商品热度差异大,商品历史点击次数呈现一个长尾分布,数据存在严重的流

行度偏差问题,并且评估指标 NDCG@50_half 用于考察低热度商品的排序质量。

基于 i2i 游走的 Debiasing 排序方案:我们的方案为基于 i2i 建模的排序框架。如图

所示,整体流程包含四个阶段:i2i 构图与多跳游走、i2i 样本构建、i2i 建模以及 u2i 排

序。前两个阶段解决了选择性偏差问题,后两个阶段则侧重于解决流行度偏差问题。

图 4 基于 i2i 的建模框架

第一个阶段是基于用户行为数据和商品多模态数据构建 i2i 图,并在该图上多跳游走

生成候选样本。这种方式扩大了商品候选集,更好地近似系统真实候选集,缓解了选

择性偏差。

第二个阶段是根据不同 i2i 关系计算 i2i 候选样本的相似度,从而决定每种 i2i 关系下

候选样本的数量,最终形成候选集。通过不同候选的构造方法,探索出更多有差异的

候选商品,可以进一步缓解选择性偏差问题。

第三个阶段包括基于 i2i 样本集的自动化特征工程,以及使用流行度加权的损失函数

进行消除流行度偏差的建模。自动化特征工程中包含了商品多模态信息的刻画,这类

信息能够反应商品在热度信息以外的竞争关系,能够一定程度上缓解流行度偏差问

题。而流行度加权的损失函数定义如下:

算法 

其中,参数 α 与流行度成反比,来削弱流行商品的权重,从而消除流行度偏差。参

数 β 是正样本权重,用于解决样本不平衡问题。

第四个阶段首先将 i2i 打分通过 Max 操作进行聚合,突出打分集合中低热度商品的高

分信号,从而缓解流行度偏差问题。然后对商品列表的打分结合商品热度进行调整处

理,进而缓解流行度偏差问题。

关于该比赛的更多细节,大家可以参考《KDD Cup 2020 Debiasing 比赛冠军技术

方案及在美团的实践》一文。

2.2 时间序列问题

时序系列问题:时间序列问题相比于推荐系统问题的有较大差异。在任务上,推荐系

统预测的是未来单个点,而时间序列预测未来多个点;在数据上,推荐系统通常包含

用户、商品、上下文等多维信息,时间序列通常包含时间空间上变化的数值序列信息。

时间序列竞赛:在本文中,时间序列竞赛主要介绍 KDD Cup 2018 Fresh Air 和

KDD Cup 2017 HighWay Tollgates Traffic Flow Prediction。它们都是时间序列

问题,前者是预测未来两天的污染物浓度以及变化,后者是预测未来几个小时高速

交通情况和变化。它们的共同点一是传统行业问题,实际意义强;二是存在各种突变

性、稳定性低;三是都涉及到多地域、多空间问题,需结合时空进行建模。它们的异

同点是污染物浓度突变需要一个短期时间才能发生,数据在突变时存在一定规律性,

但交通突变具有强偶发性,交通道路容易受到偶发性车祸、偶发性地质灾害等影响,

数据不会呈现出明显的规律性。

KDD Cup 2018 Fresh Air:基于时空门控 DNN 和 Seq2Seq 的空气质量预测方案

竞赛问题及挑战:竞赛目标是预测北京和伦敦 48 个站点在未来 48 小时里 PM2.5/

PM10/O3 的浓度变化,具体参考:KDD Cup 2018 比赛介绍详情 [28]。参赛选手需

要解决以下两个挑战:

● 时序性:预测未来 48 小时的污染浓度情况,实际污染物浓度存在突变的情况。

44 > 2022年美团技术年货

如图 5 所示,站点 2 在 05-05 以及 05-06、05-07 之间存在大量的波动和

突变。

● 空间性:不同站点上污染物浓度有明显差异,并且和站点之间的拓扑结构相关联。

如图所示,站点 1、2 的波形有较大差别,但是在 05-07 产生了相同的凸起。

图 5 时空挑战图

基于 Spatial-temporal Gated DNN 与 Seq2Seq 的模型融合方案 [9]:为了强化时

间序列和空间拓扑的建模,我们引入了 Spatial-temporal Gated DNN 与 Seq2Seq

两个模型,并与 LightGBM 一起构建模型融合方案,具体如下。

(1)Spatial-temporal Gated DNN:对于时序问题而言,由于未来预测临近时间

点的统计特征值差异较小,直接使用 DNN 模型会使得不同小时和站点的预测值差异

性小,因此我们在 DNN 中引入 Spatial-temporal Gate 来突出时空信息。如下图 6

所示,Spatial-temporal Gated DNN 采用了双塔结构,拆分了时空信息和其他信

息,并且通过门函数来控制和强调时空信息,最终能够提高模型对时空的敏感度,实

验中发现引入 swish 激活函数 f(x) = x·sigmoid(x) 能提升模型精度。

算法 

图 6 Spatial-temporal Gated DNN

(2)Seq2Seq:尽管 Spatial-temporal Gated DNN 相比 DNN 对时空信息进行了

强化,但是它们的数据建模方式都是将样本的历史数据复制 48 份,分别打上未来 48

小时的标签,相当于分别预测 48 小时的污染浓度值。这种方式其实和时间序列预测

任务有所脱离,失去了时间连续性。而 Seq2Seq 建模方式可以很自然地解决这一问

题,并且取得了不错的效果。下图 7 是本次比赛中,我们采用的 Seq2Seq 模型结

构。针对时序性挑战,历史天气特征通过时间前后组织成序列输入到编码器当中,解

码器依赖于编码结果以及未来天气预报特征进行解码,得到 48 小时的污染物浓度序

列。未来天气预报信息对齐到解码器每个小时的解码过程中,解码器可以通过天气预

报中的天气信息(比如风级、气压等)来有效预估出突变值。针对空间性挑战,方案

在模型中加入站点嵌入以及空间拓扑结构特征来刻画空间信息,在模型中和天气信息

46 > 2022年美团技术年货

进行拼接以及归一化,从而实现时空联合建模。

图 7 Seq2Seq 模型

(3)模型融合:我们队采用了 Stacking 融合的方式,单个学习器通过不同模型、数

据、建模方式来构建差异性。LightGBM 模型使用了天气质量、历史统计、空间拓扑

等特征,Spatial-temporal Gate 则是引入了门结构,强化了时空信息。Seq2Seq

利用序列到序列的建模方式,刻画了序列的连续性、波动性。最后使用了基于约束的

线性模型将不同的单个学习器进行融合。

更多详情,大家可参考 SIGKDD 会议论文:AccuAir: Winning Solution to Air Quality

Prediction for KDD Cup 2018。

KDD Cup 2017 Traffic Flow Prediction:基于交叉验证降噪与多损失融合的高稳定

性交通预测方案

竞赛问题及挑战:竞赛目标是以 20 分钟为时间窗口,给定前 2 小时高速公路入口到

关卡的行驶状况,预测未来 2 小时的行驶状况,具体可参考:KDD Cup 2017 比赛

介绍详情 [29]。竞赛根据行驶状况的不同,分为了行驶时间预测和交通流量预测两个赛

道。参赛选手需要解决以下两个挑战:

算法 

● 数据小、噪声多。如下图 8 所示,框中时间段的数值分布和其他时间段的分布

有明显的差异。

图 8 交通流量数据中的噪音

● 极值对结果影响大,评估指标使用了 MAPE,如下式,其中 At 代表实际值,

Ft 代表预测值,当实际值为较小值(特别为极小值)时,这一项对整个和式的

贡献拥有很大的权重。

基于交叉验证降噪的极值点优化模型融合方案:

(1)基于交叉验证的降噪,由于在线仅能进行一天一次的提交,并且最终的评测会由

A 榜测试集切到 B 榜测试集,并且由于 A 榜数据集小在线评测指标存在不稳定性,

故而离线迭代验证的方式就显得尤为重要。为了能使离线迭代置信,我们采用两种验

证方式进行辅助,第一种是下一天同时间段验证,我们在训练集最后 M 天上对每一

天都取在线同一时间段的数据集,得到 M 个验证集。第二种是 N-fold 天级采样验

证,类似 N-fold 交叉验证,我们取最后 N 天的每一天数据作为验证集,得到 N 个验

证集。这两种方法共同辅助模型离线效果的迭代,保证了我们在 B 榜上的鲁棒性。

(2)极值点问题优化和模型融合:由于 MAPE 对于极值较敏感,我们在标签、损失、

样本权重等不同方面分别进行多种不同处理,例如标签上进行 Log 变换和 Box-Cox

变换,Log 变换是对标签进行 Log 转换,模型拟合后对预估值进行还原,这样能帮

48 > 2022年美团技术年货

助模型关注于小值同时更鲁棒,损失使用 MAE、MSE 等多种,样本权重上利用标签

对样本进行加权等,我们在 XGBoost、LightGBM、DNN 上引入这些处理生成多个

不同模型进行模型融合,优化极值点问题,达到鲁棒效果。

备注:特别感谢共同参加 KDD Cup 2017 的陈欢、燕鹏、黄攀等同学。

2.3 自动化机器学习问题

自 动 化 机 器 学 习 问 题 [10] 主 要 包 括 KDD Cup 2019 AutoML 和 KDD Cup 2020

AutoGraph 比赛。该类问题,一般具有以下三个特性:

● 数据多样性强:15+ 个数据集,来源于不同领域问题,且不会标识数据来源,

要求选手设计的自动化机器学习框架能够兼容多领域的数据,并对不同领域数

据做出一定的适配。

● 自动化的鲁棒性:公共排行榜与私有榜评测数据不一样,最终评分按照多个数

据集的平均排名 / 得分得到,要求能够在不曾见过的数据集上得到鲁棒的结果。

● 性能限制:与现实问题搜索空间有较大对应,需要在有限时间和内存上求解。

KDD Cup 2020 AutoGraph:基于代理模型的自动多层次图学习优化方案

竞赛问题及挑战:自动化图表示学习挑战赛(AutoGraph)是第一个应用于图结构数

据的 AutoML 挑战,详情请见 KDD Cup 2020 AutoGraph 比赛介绍 [30]。竞赛选择

图结点多分类任务来评估表示学习的质量,参与者需设计自动化图表示学习 [11-13]

解决方案。该方案需要基于图的给定特征、邻域和结构信息,高效地学习每个结点的

高质量表示。比赛数据从真实业务中收集,包含社交网络、论文网络、知识图谱等多

种领域共 15 个,其中 5 个数据集可供下载,5 个反馈数据集评估方案在公共排行榜

的得分,剩余 5 个数据集在最后一次提交中评估最终排名。

算法 

图 9 AutoGraph 图数据集概览

每个数据集给予了图结点 id 和结点特征,图边和边权信息,以及该数据集的时间预

算(100-200 秒)和内存算力(30G)。每个训练集随机将划分 40% 结点为训练集,

60% 结点为测试集,参赛者设计自动化图学习解决方案,对测试集结点进行分类。

每个数据集会通过精度(Accuracy)来确定排名,最终排名将根据最后 5 个数据集的

平均排名来评估。综上,本次比赛需要在未见过的 5 个数据集上直接执行自动化图学

习方案,参赛者当时面临着以下挑战:

● 图模型具有高方差、稳定性低等特点。

● 每个数据集都有严格的时间预算和内存算力限制。

50 > 2022年美团技术年货

基于代理模型的自动化多层次模型优化 [14]

图 10 AutoHEnsGNN 框架

多类别层次化图模型优化:

(1)候选图模型的生成:现实世界中的图通常是多种属性的组合,这些属性信息很难

只用一种方法捕捉完全,因此,我们使用了基于谱域、空域、Attention 机制等多种

不同类型的模型来捕捉多种属性关系。不同模型在不同数据集上效果差异较大,为了

防止后续模型融合时加入效果较差的模型,会对 GCN、GAT、APPNP、TAGC、

DNA、GraphSAGE、GraphMix、Grand、GCNII 等候选模型进行快速筛选,得

到模型池。

(2)层次模型集成:这部分共包含两个维度的集成。第一层为模型自集成,为了解决

图模型对初始化特别敏感,同种模型精度波动可达 ±1% 的问题,采用了同模型的自

集成,同时生成多个同种模型,并取模型预测的平均值作为该种模型的输出结果,成

功降低了同种模型方差,提高了模型在不同数据集上的稳定性。第二层为不同模型集

成,为了有效地利用来自本地和全球邻域的信息,充分捕获图的不同性质,我们采用

加权集成了不同种类的图模型,进一步提高性能。同时针对在参数搜索阶段,需要同

时优化模型内参数 α,以及多种模型加权集成参数 β,使用模型集成参数和模型内

参数通过互迭代的梯度下降进行求解,有效提升了速度。

算法 

图 11 多类别层次化图模型优化

基于代理模型与最终模型的两阶段优化:数据集采样,对子图根据 Label 进行层次采

样,减少模型验证时间;代理模型与 Bagging,计算多个较小隐层模型的平均结果,

快速对该类模型进行评估。使用 Kendall Rank 和 SpeedUp 平衡准确度与加速倍

率,得到合适的代理模型。最终通过代理模型得到了最优的超参数,然后再对最终的

大模型在搜索好的参数上进行模型训练。

具体详情,大家可参考团队 ICDE 2022 论文,AutoHEnsGNN: Winning Solution

to AutoGraph Challenge for KDD Cup 2020。

52 > 2022年美团技术年货

3. AutoML 技术框架

3.1 自动化框架概述

图 12 AutoML 整体框架

经过上述的多场比赛,团队在多领域建模中不断总结与优化,抽象出其中较为通用的

模块,总结得到针对数据挖掘类问题时的一套较为通用的解决方案——AutoML 框

架。该框架包含数据预处理,自动化特征工程 [15] 和自动化模型优化 [16-20] 三个部分。

其中数据预处理部分主要负责特征分类、数据编码、缺失值处理等常见的基础操作,

不过多展开。主要针对 AutoML 框架的自动化特征工程和自动化模型优化两个部分进

行详细介绍。

算法 

3.2 自动化特征工程

图 13 自动化特征工程

特征工程是机器学习中至关重要的工作,特征的好坏直接决定了模型精度的上限。目

前常见的方式是人工手动对特征进行组合与变换,但人工特征挖掘存在速度较慢、无

法挖掘全面等问题。因此,设计全面挖掘的自动化特征工程能够比较好地解决上述问

题,自动化特征工程主要包含三个部分:

● 一、二阶特征算子:对数据的基础操作,可以得到更为复杂的高阶特征。特征

算子包含三个,频数编码是指对于类别型特征在样本中次数、nunique 等值的

统计。目标编码指对数值型特征进行均值、求和、最大最小、百分位等操作。

时序差分是指对于对时间特征进行差分处理。一阶算子使用一个实体计算,二

阶算子使用二个实体计算,如用户在某品类下的订单数量,使用了用户与品类

两个实体。

● 快速特征选择:因为自动化特征工程是针对全部实体依次按照不同特征算子进

行的笛卡尔积组合,会产生大量的无效特征,故需要进行快速特征选择。使用

LightGBM 模型快速识别有效特征及无用特征,从指标提升及特征重要性角度

考虑,裁剪掉没用的特征,同时标识重要特征与其他特征再次进行更为高阶的

组合。

● 高阶特征算子:基于一、二阶特征算子组合构建的新特征,进一步与其他特征

54 > 2022年美团技术年货

进行高阶组合,基于 K 阶(K>=1)的 K+1 高阶组合循环迭代,能够产出大量

人为考虑不足的高阶特征。

高阶特征算子按多实体结果是否完全匹配,分为 Match 方式——匹配全部实体,All

方式——匹配部分实体,得到另一实体的全部值的计算结果,这样两种特征产出方

式。下图中举例说明,Match 方式匹配用户与时间段两个实体,得到用户在该时间段

的平均订单价格;All 方式则只匹配用户,得到用户在所有时间段的平均订单价格。

图 14 高阶算子特征产出方式

相较于 DeepFM、DeepFFM 等算法,自动化特征工程具有三个方面的优势。首先

在存在多表信息的情况下,容易利用非训练数据的信息,如在广告场景中,通过特征

可以利用自然数据的信息,相比直接使用自然数据训练,不容易产生分布不一致等

问题;其次,只通过模型自动交叉学习,对于某些强特征交叉没有手动构造学习得充

分,许多显示交叉特征如用户商品点击率等往往有较强的业务意义,让模型直接感知

组合好的特征往往比自动学习特征间的关系更为简单;第三方面对于许多高维度稀疏

ID 特征,如亿级别以上的推荐或广告场景中,DeepFM、DeepFFM 对于这些特征

的学习很难充分,自动化特征工程能给这些稀疏 ID 构造很强的特征表示。

算法 

3.3 自动化模型优化

图 15 自动化模型优化

基于重要度的网格搜索:在我们框架中采用的是全局基于重要度按照贪心的方式进行

搜索,加快速度;得到的最优结果再进行小领域更详细网格搜索,缓解贪心策略导致

的局部最优。根据以往比赛经验,总结不同模型的超参重要性排序如下:

● LightGBM:学习率 > 样本不平衡率 > 叶子数 > 行列采样等。

● DNN:学习率 >Embedding 维度 > 全连接层数和大小。值得一提的是,超参

搜索在整个迭代过程中会进行多次,同时迭代前期与迭代后期参数搜索策略也

有所不同,迭代前期,一般会选择更大的学习率,更小 Embedding 维度和全

连接层数等,降低模型参数量加快迭代速度,而在后期则选择更多参数,获得

更好的效果。

● 模型融合:模型融合的关键点在于构造模型间的差异性,LightGBM 和 DNN

的模型本身差异性较大,同种模型中差异性主要体现在,数据差异、特征差

异、超参差异三个方面。数据差异主要通过自动化行采样实现,自动生成不同

数据采样的模型;特征差异通过自动化列采样,生成特征采样的模型;超参差

异通过高优参数扰动生成,在最优局部进行参数组网格局部扰动。模型融合方

56 > 2022年美团技术年货

法一般 Blending、Stacking 或简单 Mean Pooling 等,融合前进行需要进行

模型粒度剪枝(去除效果较差的模型避免影响融合效果)与正则化。

3.4 AutoML 框架近期实战:MDD Cup 2021 美团外卖图谱推荐

比赛冠军方案

在 2021 年 8-9 月美团举行的内部算法比赛 MDD Cup 2021 中,美团到店广告平台

质量预估团队应用了 AutoML 框架并获得了冠军。下面结合这场比赛,介绍框架在具

体问题中的应用。

MDD Cup 2021 需要参赛者根据用户、商家在图谱中的属性、用户的历史点击、实

时点击以及下单行为,预测下次购买的商家。包含四周的 135 万个订单行为,涉及

20 万个用户,2.9 万个商家,17.9 万个菜品,订单关联菜品数据共 438 万条,构成

知识图谱。使用 Hitrate@5 作为评价指标。

数据预处理阶段:进行特征分类、异常值处理、统一编码等操作。主要涉及用户(用

户画像特征等)、商家(品类、评分、品牌等)、菜品(口味、价格、食材等)三种实体

数据及点击、购买(LBS、价格、时间等)两类交互数据,对原始数据进行特征分类、

数据编码、缺失值处理等常见预处理操作。

自动化特征工程:一、二阶特征算子,首先对于类别、数据、时序、标签四类原始特

征,按照可抽象的三种实体及两类交互数据进行一、二阶特征交叉,运用频数编码、

目标编码与时序差分算子操作,在多时段上统计得到一、二阶统计特征。举例说明,

如频数编码可计算用户点击某商家的次数、用户购买商家品类的 nunique 值,用户

在某场景的下单数量等。目标编码可计算用户的平均订单价格,用户点击次数最多的

商家品类等。时序差分可计算如用户购买某口味菜品的平均时间差等。多时段统计则

意味着上述特征均可在不同时段上计算得到。

算法 

图 16 多阶特征交叉

快速特征选择,上述自动产出的一、二阶统计特征数量共有 1000+,其中存在大量

无效特征,故使用 LightGBM 模型,从指标提升与重要性角度进行特征筛选与重要

标识。如用户 x 菜品口味的特征没什么效果,进行筛除;用户最常购买的价格区间则

很有效果,标识为重要特征进行高阶组合。

高阶特征算子,基于一、二阶特征算子组合构建的新特征,可以作为输入进行高阶特

征组合。这里值得一提的是,高阶特征组合存在两种形式,第一种原始特征的更高阶

组合,如用户在某个商家中最喜欢的菜品口味,结合三个实体,并不需要额外的运

算,第二种需使用一、二阶新特征,其中频数编码的结果可以直接使用,目标编码与

时序差分需要先进行数值分桶操作转换为离散值后才可使用,如用户订单价格区间的

众数 x 商家订单价格平均值的分桶的联合 count。循环进行特征组合与筛选后就得到

了最终的特征集。

自动化模型优化:模型部分使用了 LightGBM 和 DIN 的融合方案,迭代过程中多次

进行了自动超参搜索,通过自动化行、列采样及最优参数局部扰动构造了具有差异性

的多个模型,融合得到最终的结果。

58 > 2022年美团技术年货

4. 通用建模方法与理解

本节会就比赛的通用建模方法进行介绍,即面对一个新问题,如何进行快速高效的整

体方案设计。

4.1 建模框架与方法

在面对新问题时,我们主要将技术框架分为以下三个阶段,即探索性建模、关键性建

模、自动化建模。三个阶段具有逐渐深化,进一步补充的作用。

图 17 三阶段算法建模

探索性建模:比赛前期,首先进行问题理解,包括评估指标与数据表理解,然后进行

基础的模型搭建,并线上提交验证一致性。在一致性验证过程中往往需要多次提交,

找到同线上指标一致的评估方式。探索性建模的核心目标是要找到迭代思路与方法,

所以需要对问题做多方面探索,在探索中找到正确的方向。

一般在非时序问题,采用 N-fold 方法构造多个验证集,并可以灵活变换生成种子,

得到不同的集合。而在时序问题,一般会采用滑窗方式,构造同线上提交时间一致的

验证集,并可以向前滑动 k 天,来构造 k 个验证集。在多个验证集评估中,可以参考

均值,方差,极值等参考指标综合评估,得到同线上一致的结果。

关键性建模:比赛中期,会就关键问题进行深挖,达成方案在榜单 Top 行列,在问题

理解方面,会尽可能就评估方式进行损失函数自定义设计。

分类问题优化,可以结合 Logloss、AUC Loss[21]、NDCG Loss 等不同损失函数进

算法 

行 Mix Loss 设计。而回归问题的损失函数设计要更复杂,一方面可以结合平方误差,

绝对值误差等进行损失函数设计,另一方面可以结合 Log 变换,Box-cox 变换等解

决回归异常值等问题。

自动化建模:比赛后期,由于基于人的理解一方面在细节与角度有盲区,另一方面较

难进行抽象关系的建模,所以我们会采用自动化建模进行补充。如下图 18 所示,先

基于关系型多表输入,进行自动化关联,然后通过生成式自动化特征工程构建大量特

征,再进行特征选择与迭代,然后基于模型输入进行自动化超参搜索与模型选择,最

终基于多模型进行自动化融合构建,将生成的多元化模型关系进行选择与赋权。

图 18 自动化建模框架

自动化建模一般采用如图 18 的框架,先进行多表关联,然后基于先扩展后过滤的

逻辑进行特征选择,下一步基于精选特征与多个超参范围进行超参搜索,最后采用

XGBoost[22]、LightGBM、DNN、RNN、FFM 等不同模型进行自动化模型融合。

4.2 同工业界方法联系

算法比赛相对于工业界实际情况而言,一个重要区别是工业界涉及线上系统,在工程

方面性能的挑战更大,在算法方面涉及更多的线上线下效果一致性问题。因此算法

比赛会在模型复杂度、模型精度更进一步,在算法比赛中也产出了 ResNet、Field-

aware Factorization Machine(FFM)、XGBoost 等算法模型,广泛应用于工业界

60 > 2022年美团技术年货

实际系统。

在空气质量预测中,我们采用了时空结合的 Spatial-temporal Gated DNN 网络进

行有效建模,同空气质量问题相接近,在美团的实际业务中也面临着时空相结合的建

模问题,以用户行为序列建模为例。我们对用户的历史时空信息和当前时空信息进行

了充分的建模和交互 [24]。我们分辨出用户行为的三重时空信息,即:用户点击发生时

的时间、用户请求发出的地理位置、用户所点击的商户的地理位置。

基于上述三重时空信息,我们提出 Spatio-temporal Activator Layer(如图 19):三

边时空注意力机制神经网络来对用户历史行为进行建模,具体通过对请求经纬度信

息、商户经纬度信息和请求时间的交互进行学习。针对空间信息交叉,我们进一步采

用地理位置哈希编码和球面距离相结合的方式;针对时间信息交叉,我们也采用绝对

与相对时间相结合的方式,有效实现用户行为序列在不同时空条件下的三边表达。最

后,经上述网络编码后的时空信息经过注意力机制网络融合,得到 LBS 场景下用户

超长行为序列对不同请求候选的个性化表达。

相比较而言,比赛中的 Spatial-temporal Gated DNN 更注重时空融合信息对于预

测值的影响,由于需要预测的时间序列问题,更侧重于不同的时间、空间信息有能够

将差异性建模充分。而在美团业务中的时空网络注重于细粒度刻画空间信息,源于不

同的球面距离,不同的区块位置影响大,需要多重信息深度建模。更多详情,大家

可参考团队的 CIKM 论文:Trilateral Spatiotemporal Attention Network for User

Behavior Modeling in Location-based Search[23]。

算法 

图 19 基于三边时空注意力机制的用户行为序列网络

在实际建模中,相对于比赛涉及到更多线上部分,而比赛主要专注于离线数据集的精

度极值。同 Debiasing 比赛相比,在实际线上系统中,涉及到 Bias 等更多的问题,

以 Position Bias 为例,实际的展示数据高位点击率天然高于低位,然而一部分是源

于用户高低位之间的浏览习惯差异,因此对于数据的直接建模不足以表征对于高低位

广告点击率与质量的评估。我们在美团实际广告系统中,设计了位置组合预估框架进

行建模,取得不错的效果,这里不再详述。具体详情,大家可参考团队 SIGIR 论文:

Deep Position-wise Interaction Network for CTR Prediction[7]。

4.3 建模关键理解

一致的评估方式是决定模型泛化能力的关键

在比赛的机制中,通常最终评测的 Private Data 和此前一直榜单的 Public Data 并

不是一份数据,有时切换数据会有几十名的名次抖动,影响最终排名。因此避免过拟

合到常规迭代的 Public Data 是最终取胜的关键。那么在此问题上,如何构造同线上

分布一致的验证集呢?从一致性角度,一般会构造时间间隔一致的验证集。而部分问

题数据噪音较重,可以用动态滑窗等方式构造多个验证集相结合。一致的验证集决定

着后面的迭代方向。

大数据注重模型的深化,小数据注重模型的鲁棒

不同数据集注重的内容不一样,在数据充分的场景下,核心问题是模型深化,以解决

62 > 2022年美团技术年货

特征之间交叉,组合等复杂问题。而在小数据下,因为噪音多,不稳定性强,核心问

题是模型的鲁棒。高数据敏感性是方案设计的关键。

方差与偏差的平衡是后期指导优化的关键

从误差分解角度去理解,平方误差可以分解为偏差 (Bias) 与方差 (Variance)[25],在

中前期模型复杂度较低时,通过提升模型复杂度,能够有效减低偏差。而在偏差已经

被高度优化的后期,方差的优化是关键,因此在后期会通过 Emsemble 等方式,在

单模型复杂度不变的基础上,通过模型融合优化结果。

AutoML 的关键是人为先验的不断减少

在运用 AutoML 框架的同时,会有一些超参数等隐蔽的人为先验,把 AutoML 技术

也以模型视角来理解,同样存在模型复杂度越高越容易过拟合的问题,迭代中的一个

关键问题不是评估效果的好坏,而是方案是否存在不必要的超参数等信息,能否不断

地简化 AutoML 的建模,不断地自动化,自适应适配各类问题。

最后,也特别感谢 Convolution Team、Nomo Team、Getmax Team、Aister

Team 等队伍的队友们。

总结

本文基于笔者 7 次算法比赛的冠军经历,分享推荐系统、时间序列及自动化机器学习

等不同领域比赛中的算法经验,接着结合具体问题介绍 AutoML 技术框架,最后总

结比赛中通用的建模方案,结合工业界方案介绍其与比赛的联系。希望文章中的一些

算法比赛相关经验能够帮助算法爱好者更好地参与竞赛,能为大家提供一些思路,启

迪更多的工程师与研究员在实际工作中取得更优结果。未来,我们团队将持续关注国

际算法竞赛,积极进行比赛思路与工业方案结合的尝试,同时也欢迎大家加入我们团

队,文末附有招聘信息,期待你的邮件。

算法 

作者简介

胡可、兴元、明健、坚强,均来自美团广告平台质量预估团队。

参考文献

[1] Juan Y , Zhuang Y , Chin W S , et al. Field-aware Factorization Machines for CTR

Prediction[C]// the 10th ACM Conference. ACM, 2016.

[2] He K , Zhang X , Ren S , et al. Identity Mappings in Deep Residual Networks[J].

Springer, Cham, 2016.

[3] Ali, Jehad & Khan, Rehanullah & Ahmad, Nasir & Maqsood, Imran. (2012).

Random Forests and Decision Trees. International Journal of Computer Science

Issues(IJCSI). 9.

[4] Robi Polikar. 2006. Ensemble based systems in decision making. IEEE Circuits and

systems magazine 6, 3 (2006), 21–45.

[5] Jiawei Chen, Hande Dong, Xiang Wang, Fuli Feng, Meng Wang, and Xiangnan He.

2020. Bias and Debias in Recommender System: A Survey and Future Directions.

arXiv preprint arXiv:2010.03240 (2020).

[6] H. Abdollahpouri and M. Mansoury,“Multi-sided exposure bias in

recommendation,”arXiv preprint arXiv:2006.15772, 2020.

[7] Huang J, Hu K, Tang Q, et al. Deep Position-wise Interaction Network for CTR

Prediction[J]. arXiv preprint arXiv:2106.05482, 2021.

[8] KDD Cup 2020 Debiasing 比赛冠军技术方案及在美团的实践 .

[9] Luo Z, Huang J, Hu K, et al. AccuAir: Winning solution to air quality prediction for

KDD Cup 2018[C]//Proceedings of the 25th ACM SIGKDD International Conference

on Knowledge Discovery & Data Mining. 2019: 1842-1850.

[10] He Y, Lin J, Liu Z, et al. Amc: Automl for model compression and acceleration on

mobile devices[C]//Proceedings of the European conference on computer vision

(ECCV). 2018: 784-800.

[11] Yang Gao, Hong Yang, Peng Zhang, Chuan Zhou, and Yue Hu. 2020. Graph

neural architecture search. In IJCAI, Vol. 20. 1403–1409.

[12] Matheus Nunes and Gisele L Pappa. 2020. Neural Architecture Search in Graph

Neural Networks. In Brazilian Conference on Intelligent Systems. Springer, 302–

317.

[13] Huan Zhao, Lanning Wei, and Quanming Yao. 2020. Simplifying Architecture

Search for Graph Neural Network. arXiv preprint arXiv:2008.11652 (2020).

[14] Jin Xu, Mingjian Chen, Jianqiang Huang, Xingyuan Tang, Ke Hu, Jian Li, Jia

Cheng, Jun Lei:“AutoHEnsGNN: Winning Solution to AutoGraph Challenge for

KDD Cup 2020”, 2021; arXiv:2111.12952.

[15] Selsaas L R, Agrawal B, Rong C, et al. AFFM: auto feature engineering in field-

aware factorization machines for predictive analytics[C]//2015 IEEE International

Conference on Data Mining Workshop (ICDMW). IEEE, 2015: 1705-1709.

64 > 2022年美团技术年货

[16] Yao Shu, Wei Wang, and Shaofeng Cai. 2019. Understanding Architectures

Learnt by Cell-based Neural Architecture Search. In International Conference on

Learning Representations.

[17] Kaicheng Yu, Rene Ranftl, and Mathieu Salzmann. 2020. How to Train Your

Super-Net: An Analysis of Training Heuristics in Weight-Sharing NAS. arXiv

preprint arXiv:2003.04276 (2020).

[18] Haixun Wang, Wei Fan, Philip S Yu, and Jiawei Han. 2003. Mining concept-

drifting data streams using ensemble classifiers. In Proceedings of the ninth ACM

SIGKDD international conference on Knowledge discovery and data mining.

226–235.

[19] Robi Polikar. 2006. Ensemble based systems in decision making. IEEE Circuits

and systems magazine 6, 3 (2006), 21–45.

[20] Chengshuai Zhao, Yang Qiu, Shuang Zhou, Shichao Liu, Wen Zhang, and Yanqing

Niu. 2020. Graph embedding ensemble methods based on the heterogeneous

network for lncRNA-miRNA interaction prediction. BMC genomics 21, 13 (2020),

1–12.

[21] Rosenfeld N , Meshi O , Tarlow D , et al. Learning Structured Models with the AUC

Loss and Its Generalizations.

[22] Chen T , Tong H , Benesty M . xgboost: Extreme Gradient Boosting[J]. 2016.

[23] Qi, Yi, et al.“Trilateral Spatiotemporal Attention Network for User Behavior

Modeling in Location-based Search”, CIKM 2021.

[24] 广告深度预估技术在美团到店场景下的突破与畅想 .

[25] Geurts P . Bias vs Variance Decomposition for Regression and Classification[J].

Springer US, 2005

[26] Kaggle Outbrain 比赛链接:https://www.kaggle.com/c/outbrain-click-prediction.

[27] KDD Cup 2020 Debiasing 比赛链接 https://tianchi.aliyun.com/competition/entrance/

231785/introduction.

[28] KDD Cup 2018 比赛链接:https://www.biendata.xyz/competition/kdd_2018/.

[29] KDD Cup 2017 比 赛 链 接:https://tianchi.aliyun.com/competition/entrance/231597/

introduction.

[30] KDD Cup 2020 AutoGraph 比赛链接:https://www.automl.ai/competitions/3

招聘信息

美团到店广告平台算法团队立足广告场景,探索深度学习、强化学习、人工智能、大数据、知

识图谱、NLP 和计算机视觉前沿的技术发展,探索本地生活服务电商的价值。主要工作方向

包括:

● 触发策略:用户意图识别、广告商家数据理解,Query 改写,深度匹配,相关性建模。

● 质量预估:广告质量度建模。点击率、转化率、客单价、交易额预估。

● 机制设计:广告排序机制、竞价机制、出价建议、流量预估、预算分配。

● 创意优化:智能创意设计。广告图片、文字、团单、优惠信息等展示创意的优化。

算法 

岗位要求:

● 有三年以上相关工作经验,对 CTR/CVR 预估、NLP、图像理解、机制设计至少一方面有应

用经验。

● 熟悉常用的机器学习、深度学习、强化学习模型。

● 具有优秀的逻辑思维能力,对解决挑战性问题充满热情,对数据敏感,善于分析 / 解决问题。

● 计算机、数学相关专业硕士及以上学历。

具备以下条件优先:

● 有广告 / 搜索 / 推荐等相关业务经验。

● 有大规模机器学习相关经验。

感兴趣的同学可投递简历至:[email protected](邮件标题请注明:广平算法团队)。

66 > 2022年美团技术年货

图神经网络训练框架的实践和探索

作者:付浩 宪鹏 祥洲 玉基 徐灏 梦迪 武威

1. 前言

万物之间皆有联系。图作为一种通用的数据结构,可以很好地描述实体与实体之间

的关系。例如,在社交网络中,用图来表示用户与用户之间的好友关系;在电商网站

中,用图表示用户与商品之间的点击购买行为;在知识图谱构建中,还可以用图表示

实体与实体间多样的关系。另一方面,深度学习技术在计算机视觉、自然语言处理、

语音处理等领域均已取得了巨大的成功。深度学习技术将图像、文本、语音等多种多

样的数据转化为稠密的向量表示,提供了表示数据的另一种方式。借助于硬件日益强

大的计算能力,深度学习可以从海量数据中学习到数据之间复杂多样的相关性。

这会让人不禁思考,深度学习能否应用到更广阔的领域,比如——图?事实上,早

在深度学习兴起之前,业界就已经开始了图嵌入 (Graph Embedding) 技术的探

索 [1]。早期的图嵌入算法多以启发式的矩阵分解、概率图模型为主;随后出现了以

DeepWalk[2] 和 Node2vec[3] 为代表的、较为“浅层”的神经网络模型;最后,以

GCN[4] 为代表的一系列研究工作,打通了图信号处理与神经网络之间的壁垒,奠定

了当前基于消息传递机制的图神经网络 (GNN: Graph Neural Network) 模型的基本

范式。

近年来,图神经网络逐渐成为学术界的研究热点之一 [5]。在工业界,图神经网络在电

商搜索、推荐、在线广告、金融风控、交通预估等领域也有诸多的落地应用,并带来

了显著收益。

由于图数据特有的稀疏性(图的所有节点对之间只有少量边相连),直接使用通用的深

度学习框架(例如 TensorFlow 和 PyTorch)训练往往性能不佳。工欲善其事,必先

利其器。针对图神经网络的深度学习框架应运而出:PyG (PyTorch Geometric)[6] 和

DGL (Deep Graph Library)[7] 等开源框架大幅提升了图神经网络的训练速度,并且

算法 

降低了资源消耗 [17][18],拥有活跃的社区支持。很多公司根据自身业务特点,也纷纷

建设自有的图神经网络框架。美团搜索与 NLP 团队在长期的落地实践中,总结实践

经验,在训练的规模和性能、功能的丰富性、易用性等方面进行了大量优化。本文首

先介绍我们在过往落地应用中遇到的实际问题和挑战,然后再介绍具体的解决方案。

1.1 问题和挑战

从工业界落地应用的角度来看,一个“好用”的图神经网络框架至少具备以下特点。

(1)完善支持当前流行的图神经网络模型。

从图本身的类型来看,图神经网络模型可以分为同质图 (Homogeneous Graph)、

异质图 (Heterogeneous Graph)、动态图 (Dynamic Graph) 等类型。从训练方式

来看,又可以分为全



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3